home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus Extra 1997 #1
/
Amiga Plus Extra 1997 #1.iso
/
programme
/
tools
/
leoutils
/
fakecpu.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-04-26
|
3KB
|
92 lines
/* Kone ottaa selville tietokoneen mikroprosessorin tyypin ja tulostaa sen. */
/* Pyydettäessä ohjelma myös muuttaa koneen tyypin kertovaa systeemi- */
/* struktuuria. */
#include <string.h>
#include <exec/exec.h>
#ifdef __SASC
#include <proto/dos.h>
#else
#include <clib/dos_protos.h>
#endif
static char *Ver = "$VER:FakeCPU 1.0 " __AMIGADATE__;
UBYTE CPUType, *FPUType;
extern struct ExecBase *SysBase;
int main(int argc, char **argv) {
int i;
Printf("\nExecBase = %08lx\n", SysBase);
Printf("The version of exec.library = %2ld.%-2ld\n",
(LONG) (SysBase -> LibNode.lib_Version), (LONG) (SysBase -> LibNode.lib_Revision));
if (SysBase->AttnFlags & AFF_68040) CPUType = 4;
else if (SysBase->AttnFlags & AFF_68030) CPUType = 3;
else if (SysBase->AttnFlags & AFF_68020) CPUType = 2;
else if (SysBase->AttnFlags & AFF_68010) CPUType = 1;
else CPUType = 0;
if (SysBase->AttnFlags & AFF_FPU40)
if (SysBase->AttnFlags & (AFF_68882 | AFF_68881)) {
FPUType = "FPU040 + 68882 emulating software";
} else {
FPUType = "FPU040, no 68882 emulation software";
}
else if (SysBase->AttnFlags & AFF_68882) FPUType = "68882";
else if (SysBase->AttnFlags & AFF_68881) FPUType = "68881";
else FPUType = "NONE";
Printf("Your CPU: 680%ld0, FPU: %s\n\n", (LONG) CPUType, FPUType);
for (i=1; i<argc; i++) {
if (!strcmp(argv[i],"NOFPU") || !(strcmp(argv[i],"nofpu"))) {
SysBase->AttnFlags &= ~(AFF_68881 | AFF_68882 | AFF_FPU40);
Printf("FPU marked offline\n\n");
} else if (!strcmp(argv[i],"68881")) {
SysBase->AttnFlags &= ~(AFF_68882 | AFF_FPU40);
SysBase->AttnFlags |= (AFF_68881);
Printf("FPU marked as 68881\n\n");
} else if (!strcmp(argv[i],"68882")) {
SysBase->AttnFlags &= ~(AFF_FPU40);
SysBase->AttnFlags |= (AFF_68881 | AFF_68882);
Printf("FPU marked as 68882\n\n");
} else if (!strcmp(argv[i],"FPU040") || !strcmp(argv[i],"fpu040")) {
SysBase->AttnFlags &= ~(AFF_68881 | AFF_68882);
SysBase->AttnFlags |= (AFF_FPU40);
Printf("FPU marked as FPU040 without 68882 emulating software\n\n");
} else if (!strcmp(argv[i],"FPU040+882") || !strcmp(argv[i],"fpu040+882")) {
SysBase->AttnFlags |= (AFF_68881 | AFF_68882 | AFF_FPU40);
Printf("FPU marked as FPU040 with 68882 emulating software\n\n");
} else if (!strcmp(argv[i],"68000")) {
SysBase->AttnFlags &= ~(AFF_68010 | AFF_68020 | AFF_68030 | AFF_68040);
Printf("CPU marked as 68000\n\n");
} else if (!strcmp(argv[i],"68010")) {
SysBase->AttnFlags &= ~(AFF_68020 | AFF_68030 | AFF_68040);
SysBase->AttnFlags |= (AFF_68010);
Printf("CPU marked as 68010\n\n");
} else if (!strcmp(argv[i],"68020")) {
SysBase->AttnFlags &= ~(AFF_68030 | AFF_68040);
SysBase->AttnFlags |= (AFF_68010 | AFF_68020);
Printf("CPU marked as 68020\n\n");
} else if (!strcmp(argv[i],"68030")) {
SysBase->AttnFlags &= ~(AFF_68040);
SysBase->AttnFlags |= (AFF_68010 | AFF_68020 | AFF_68030);
Printf("CPU marked as 68030\n\n");
} else if (!strcmp(argv[i],"68040")) {
SysBase->AttnFlags |= (AFF_68010 | AFF_68020 | AFF_68030 | AFF_68040);
Printf("CPU marked as 68040\n\n");
} else {
if (strcmp(argv[i],"?") && (strcmp(argv[i],"-h"))) {
Printf("*** ERROR: %s is not a valid option!\n\n", argv[i]);
}
Printf("FakeCPU 1.0, ©1994 Leopold-Soft\n"
"Usage: %s [NOFPU 68881 68882 FPU040 FPU040+882 680x0]\n\n",argv[0]);
}
}
return 0;
}